<template>
    <div class="form-page">
      
       
      <div class="form-group">
  
        <form @submit="handleSubmit">
  
  
          <div class="form-group">
          <label>address:</label>
          <input type="text" v-model="token">
        </div>
  
           
        <button type="submit">Share</button>
        
        </form>
     
     
    </div>
    </div>
  </template>
  
  <script setup>
  import { ref, onMounted } from 'vue';
  import { useRoute } from 'vue-router';
  import * as anchor from "@coral-xyz/anchor";
  import {
		ENV,
		TokenListProvider
	} from "@solana/spl-token-registry";
  import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram ,LAMPORTS_PER_SOL} from "@solana/web3.js";
  import { AnchorError } from '@coral-xyz/anchor';
  import { ASSOCIATED_PROGRAM_ID, TOKEN_PROGRAM_ID, associatedAddress } from "@coral-xyz/anchor/dist/cjs/utils/token";
  import { BN } from "bn.js";
  
  import { useWallet } from 'solana-wallets-vue'
  const METADATA_PROGRAM = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
  
  import store from '../vuex';
  
   const token = ref('3Uaj6HTYHZyLSgUrC4i9LCreTKHK6cmj695dcvzahzmz');
  

  
  async function stakeToken() {
    const workspaceValue = store.state.workspace.value;
    if (!workspaceValue) {
      console.error('Workspace is not initialized.');
      return;
    }
  
  //组装数据
  

  const tokenValue = token.value;

  
  const { wallet, connection, provider, program } = workspaceValue;

    const mint = new PublicKey(tokenValue);//初始化的token mint


    let user = provider.wallet.publicKey;
   
    let pledge_pool = PublicKey.findProgramAddressSync([Buffer.from("pledge_pool")], program.programId)[0];
    let calc_info = PublicKey.findProgramAddressSync([Buffer.from("calc_info")], program.programId)[0];//用户每次调用时间间隔判断，每次调用时间间隔不能小于1小时
    let ray_valut = new PublicKey("");//在raydium上创建池子后，token对应的资金池地址 如 8wXtPeU6557ETkp9WHFY1n1EcU6NxDvbAggHGsMYiHsB  https://solscan.io/account/c4XER8NEKDgqYY5Nj9HET5rwkvZe1m3pTcwh1fVfDrt
    const tx = await program.methods
    const user_token =  associatedAddress({
      mint: mint,
      owner: user
    });//用户token地址
  
  
    try {
  
        const tx = await program.methods
        .shareProfit()
        .accounts({
            user: user,
            mint: mint,
            pledgePool: pledge_pool,
            rayValut: ray_valut,
            calcInfo: calc_info,
            systemProgram: SystemProgram.programId,
            rent: SYSVAR_RENT_PUBKEY,
        })
        .rpc();

      console.log("Your transaction signature", tx);
  
  
   } catch (error) {
      
     if (error instanceof AnchorError) {
       
       
       const code = error.error.errorCode.code ;
       const number = error.error.errorCode.number ;
       const  message = error.error.errorMessage;
       
       console.error('捕获到的错误: ', code,number,message);
       // 在这里处理错误，例如显示错误消息给用户
     } else {
       // 处理其他类型的错误
       console.error('未知错误: ', error);
     }
   }
  
  }
  
  
  // ...您可能需要添加一些方法来处理表单提交...
  // 添加一个方法来处理表单提交
  const handleSubmit = async (event) => {
  // 阻止表单的默认提交行为
    event.preventDefault();
 
  
    store.commit('initWorkspace', {
        callback: () => {
          stakeToken();
        }
      });
  
  
  
  };
  </script>
  
  <style scoped>
  .form-page {
  color: #ffffff; /* 文字颜色为白色，以提高对比度 */
  background-color: #333333; /* 表单页面背景颜色 */
  padding: 20px; /* 添加内边距 */
  border-radius: 8px; /* 添加圆角 */
  width: 80%; /* 调整宽度为屏幕的80% */
  max-width: 700px; /* 最大宽度限制 */
  margin: 20px auto; /* 增加上下边距并水平居中 */
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */
  }
  
  .form-group {
  margin-bottom: 15px; /* 减少底部边距 */
  }
  
  label {
  display: block;
  margin-bottom: 5px; /* 减少标签下边距 */
  color: #bbbbbb; /* 标签文字颜色稍微淡一些，以区分输入框 */
  font-size: 0.9em; /* 减小字体大小 */
  }
  
  .data-display {
  padding: 10px;
  background-color: #444444; /* 数据显示背景颜色 */
  color: #dddddd; /* 数据显示文字颜色 */
  border-radius: 4px; /* 数据显示圆角 */
  margin-bottom: 10px; /* 数据显示下边距 */
  word-wrap: break-word; /* 防止内容溢出 */
  }
  
  input[type="number"],
  input[type="text"],
  input[type="datetime-local"] {
  width: 100%; /* 调整宽度为100% */
  padding: 10px;
  background-color: #444444; /* 输入框背景颜色 */
  color: #dddddd; /* 输入框文字颜色 */
  border: 1px solid #555555; /* 输入框边框颜色 */
  border-radius: 4px; /* 输入框圆角 */
  box-sizing: border-box; /* 确保宽度包括内边距和边框 */
  }
  
  button {
  padding: 10px 20px;
  background-color: #0056b3; /* 按钮背景颜色 */
  color: white;
  border: none;
  border-radius: 4px; /* 按钮圆角 */
  cursor: pointer;
  transition: background-color 0.3s; /* 添加过渡效果 */
  font-size: 0.9em; /* 减小字体大小 */
  margin-top: 15px; /* 减少按钮上边距 */
  }
  
  button:hover {
  background-color: #004080; /* 鼠标悬停时的按钮背景颜色 */
  }
  
  .pin-image {
  display: block;
  max-width: 100%; /* 确保图片不会超出容器宽度 */
  height: auto; /* 高度自动调整 */
  margin-top: 15px; /* 在图片上方添加间距 */
  border-radius: 4px; /* 图片圆角 */
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 为图片添加阴影 */
  }
  </style>
  
  
  